package cn.kmsoft.spatialboot.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 图层相交DAO
 *
 * @author
 * @date
 */
@Mapper
public interface LayerIntersectDao {
    /**
     * 空间相交分析，跨投影
     *
     * @param tableId 表ID
     * @param wkt     wkt
     * @param wkid    wkid
     * @return
     */
    List<Map<String, Object>> intersectByGeoJsonWithCrsTransform(@Param("tableId") String tableId, @Param("wkt") String wkt, @Param("wkid") int wkid,@Param("fgeo_wkid") int fgeo_wkid);

    /**
     * 空间相交分析，统一投影
     *
     * @param tableId 表ID
     * @param wkt     wkt
     * @param wkid    wkid
     * @return
     */
    List<Map<String, Object>> intersectByGeoJson(@Param("tableId") String tableId, @Param("wkt") String wkt, @Param("wkid") int wkid);

    /**
     * 面与线的空间相交分析
     *
     * @param tableId 表ID
     * @param wkt     wkt
     * @param wkid    wkid
     * @return
     */
    List<Map<String, Object>> intersectPolylineByGeoJson(@Param("tableId") String tableId, @Param("wkt") String wkt, @Param("wkid") int wkid);

    /**
     * 面与点的空间相交分析
     *
     * @param tableId 表ID
     * @param wkt     wkt
     * @param wkid    wkid
     * @return
     */
    List<Map<String, Object>> intersectPointByGeoJson(@Param("tableId") String tableId, @Param("wkt") String wkt, @Param("wkid") int wkid);


    /**
     * 空间相交分析
     *
     * @param overlaidTableId 被叠加的表ID
     * @param overlayTableId  用来叠加的表ID
     * @return
     */
    List<Map<String, Object>> intersectByTable(@Param("overlaidTableId") String overlaidTableId, @Param("overlayTableId") String overlayTableId);
}
